package top.rish.utils.excel.anno;

import top.rish.utils.excel.convert.ExcelDataConvertTo;
import top.rish.utils.excel.convert.ConvertToString;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * rish.top
 * 从excel的单元格或列,获取数据
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelCell {
    /**
     * 行
     * row,col为单元格坐标,
     * 如果row为-1,那按列获取[*,col]
     * 如果row>=0,那么按单元格坐标[row,col]获取
     * @return
     */
    int row() default -1;
    /**
     * 列 从0开始
     * @return
     */
    int col() default 0;

    /**
     * 转换器 默认转为String,对应字段类型需要为String
     * @return
     */
    Class<? extends ExcelDataConvertTo> convert() default ConvertToString.class;

    /**
     * 描述
     * @return
     */
    String descript() default "";

    /**
     * 是否必须
     * 如果是必须,那么没有值的时候,直接报错
     * 如果不是必须,没有值的时候就不报错
     * @return
     */
    boolean required() default  false;

    /**
     * 正则校验
     * @return
     */
    ExcelRegex[] regex() default {};
}
